﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace GestorDeFlotasDesktop.RegistrarViaje
{
    public partial class RegistrarViajes : Form
    {
        public RegistrarViajes()
        {
            InitializeComponent();
            using (SqlConnection con = Modelo.Modelo.createConnection())
            {

                SqlConnection con1 = Modelo.Modelo.createConnection();
                SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.TiposViaje", con1);
                DataSet ds1 = new DataSet();
                da1.Fill(ds1);
                cb_tipo_viaje.DataSource = ds1.Tables[0].DefaultView;
                cb_tipo_viaje.DisplayMember = "Ti_DescripcionTipoViaje";
                cb_tipo_viaje.ValueMember = "Id_TipoViaje";
                cb_tipo_viaje.SelectedIndex = -1;
                Modelo.Modelo.closeConnection(con1);

                SqlConnection con2 = Modelo.Modelo.createConnection();
                SqlDataAdapter da2 = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Turnos WHERE Tu_Habilitado = 1", con2);
                DataSet ds2 = new DataSet();
                da2.Fill(ds2);
                cb_turno.DataSource = ds2.Tables[0].DefaultView;
                cb_turno.DisplayMember = "Tu_Descripcion";
                cb_turno.ValueMember = "Id_Turno";
                cb_turno.SelectedIndex = -1;
                Modelo.Modelo.closeConnection(con2);

                SqlConnection con3 = Modelo.Modelo.createConnection();
                SqlDataAdapter da3 = new SqlDataAdapter("SELECT Id_Chofer, (Ch_Nombre + ', ' +Ch_Apellido) as Ch_Nombre FROM NUNCA_TAXI.Choferes WHERE Ch_Habilitado = 1", con3);
                DataSet ds3 = new DataSet();
                da3.Fill(ds3);
                cb_chofer.DataSource = ds3.Tables[0].DefaultView;
                cb_chofer.DisplayMember = "Ch_Nombre";
                cb_chofer.ValueMember = "Id_Chofer";
                cb_chofer.SelectedIndex = -1;
                Modelo.Modelo.closeConnection(con3);

                SqlConnection con4 = Modelo.Modelo.createConnection();
                SqlDataAdapter da4 = new SqlDataAdapter("SELECT Id_Cliente, (Cl_Nombre + ', ' +Cl_Apellido) as Cl_Nombre FROM NUNCA_TAXI.Clientes WHERE Cl_Habilitado = 1", con4);
                DataSet ds4 = new DataSet();
                da4.Fill(ds4);
                cb_cliente.DataSource = ds4.Tables[0].DefaultView;
                cb_cliente.DisplayMember = "Cl_Nombre";
                cb_cliente.ValueMember = "Id_Cliente";
                cb_cliente.SelectedIndex = -1;
                Modelo.Modelo.closeConnection(con4);
            }
        }

        private void aceptar_Click(object sender, EventArgs e)
        {
            if (cb_chofer.SelectedIndex.ToString() != "" && cb_cliente.SelectedIndex.ToString() != "" && cb_tipo_viaje.SelectedIndex.ToString() != "" && cb_turno.SelectedIndex.ToString() != "" && tb_fichas.Text != "" && cb_chofer.SelectedValue != "" && cb_cliente.SelectedValue != "" && cb_tipo_viaje.SelectedValue != "" && cb_turno.SelectedValue != "")
            {
                bool found = false;
                using (SqlConnection con_un = Modelo.Modelo.createConnection())
                {
                    try
                    {
                        Modelo.Modelo.openConnection(con_un);
                        SqlCommand comando_check_unique = new SqlCommand(Modelo.SqlQueries.getIsRelojEnabled(Convert.ToDateTime(dt_fecha.Text), Convert.ToInt32(cb_chofer.SelectedValue), Convert.ToInt32(cb_turno.SelectedValue)), con_un);
                        SqlDataReader reader = comando_check_unique.ExecuteReader();
                        while (reader.Read())
                        {
                            if (!reader[0].ToString().Equals("1"))
                            {
                                found = true;
                                break;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                if (!found)
                {
                    using (SqlConnection con = Modelo.Modelo.createConnection())
                    {
                        SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM NUNCA_TAXI.Turnos WHERE Tu_Descripcion = '" + cb_turno.Text + "'", con);
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        decimal valor_ficha = Convert.ToDecimal(dt.Rows[0]["Tu_Valor_Ficha"].ToString());
                        decimal valor_bandera = Convert.ToDecimal(dt.Rows[0]["Tu_Valor_Bandera"].ToString());
                        decimal importe = (Convert.ToDecimal(tb_fichas.Text) * valor_ficha) + valor_bandera;



                        da = new SqlDataAdapter("SELECT Id_Taxi FROM NUNCA_TAXI.ChoferesTurnosTaxis WHERE Id_Chofer = " + cb_chofer.SelectedValue + " AND Id_Turno = " + cb_turno.SelectedValue, con);
                        dt = new DataTable();
                        da.Fill(dt);
                        if (dt.Rows.Count == 0)
                        {
                            MessageBox.Show("El Taxi no esta registrado en el turno, para el chofer seleccionado");
                        }
                        else
                        {
                            string id_taxi = dt.Rows[0]["Id_Taxi"].ToString();

                            SqlCommand comando = new SqlCommand("INSERT INTO NUNCA_TAXI.Viajes(Id_Cliente,Id_Chofer,Id_Turno,Id_Taxi,Id_TipoViaje,Vi_Cant_Fichas,Vi_Fecha,Vi_Importe) VALUES(@cliente,@chofer,@turno,@taxi,@tipo_viaje,@cant_fichas,@fecha,@importe)", con);
                            comando.Parameters.AddWithValue("cliente", cb_cliente.SelectedValue);
                            comando.Parameters.AddWithValue("chofer", cb_chofer.SelectedValue);
                            comando.Parameters.AddWithValue("turno", cb_turno.SelectedValue);
                            comando.Parameters.AddWithValue("taxi", id_taxi);
                            comando.Parameters.AddWithValue("tipo_viaje", cb_tipo_viaje.SelectedValue);
                            comando.Parameters.AddWithValue("cant_fichas", tb_fichas.Text);
                            comando.Parameters.AddWithValue("fecha", dt_fecha.Value);
                            comando.Parameters.AddWithValue("importe", importe);

                            try
                            {
                                Modelo.Modelo.openConnection(con);
                                comando.ExecuteNonQuery();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }
                            finally
                            {
                                Modelo.Modelo.closeConnection(con);
                                Login.Login.mainForm.openForm(new RegistrarViaje.RegistrarViajes());

                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Reloj no esta habilitado");
                }
            }
            else
            {
                MessageBox.Show("Por favor, complete todos los campos para continuar");
            }
        }
    }
}
